package class01;

import java.io.UnsupportedEncodingException;

public class StringTest {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //以下是使用字面值创建字符串对象
        String s11 = "abc";
        //● public String() ：初始化新创建的 String对象，以使其表示空字符序列。
        String s = new String();
        //● String(String original)： 初始化一个新创建的 String 对象，使其表示一个与参数相同的字符序列；换句话说，新创建的字符串是该参数字符串的副本。
        String s1 = new String("abc");
        System.out.println(s1);
        //● public String(char[] value) ：通过当前参数中的字符数组来构造新的String。
        char[] chars = {'a', 'b', 'c', 'd', 'e'};
        String s2 = new String(chars);
        //● public String(char[] value,int offset, int count) ：通过字符数组的一部分来构造新的String。左闭右开
        String s3 = new String(chars, 0, 3);
        System.out.println(s3);

        //● public String(byte[] bytes) ：通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。
        byte[] bytes = {97, 98, 99, 100};
        String s4 = new String(bytes);
        System.out.println(s4);
        //● public String(byte[] bytes,String charsetName) ：通过使用指定的字符集解码当前参数中的字节数组来构造新的String。
//        charsetName：字符集编码名称
        byte[] bytes1 = {97, 98, 99, 100};

        // 在utf-8字符集中，一个汉字占用3个字节，一个字母占用1个字节。
        //* 在gbk字符集中，一个汉字占用2个字节，一个字母占用1个字节。
        //* utf-8或gbk都向下兼容了ascii码
        String s5 = new String(bytes1, "utf-8");
        System.out.println(s5);
    }
}
